import argparse

def parse_args():
    parser = argparse.ArgumentParser(description="Siamese Network Training and Inference Configuration")

    # -------------------- 模型配置 -------------------- #
    parser.add_argument('--batch_size', type=int, default=64, help='批量大小')
    parser.add_argument('--channel', type=int, default=3, help='输入图像的通道数（默认为 3，表示 RGB 图像）')
    parser.add_argument('--input_shape', type=int, nargs=2, default=[105, 105], help='输入图像的尺寸（高度，宽度）')
    parser.add_argument('--backbone', type=str, default='resnet', help='选择主干网络类型')
    parser.add_argument('--backbone_version', type=str, default='resnet101', help='选择主干网络版本')
    parser.add_argument('--pretrained', type=bool, default=True, help='是否使用预训练权重')
    parser.add_argument('--distance_type', type=str, default='cosine', 
                        choices=['l1', 'euclidean', 'mahalanobis', 'cosine'], 
                        help='选择距离计算类型（l1, euclidean, mahalanobis, cosine）')

    # -------------------- 推理配置 -------------------- #
    parser.add_argument('--inference_model_path', type=str, 
                        default="logs/exp_resnet_resnet101_2025_01_13_12_32_46/best_epoch_weights.pth", 
                        help='推理时使用的模型权重路径')
    parser.add_argument('--template_img_path', type=str, 
                        default='/home/zhangh/dataset/swj/recognition/recognition/test_car/1', 
                        help='模板图片路径')
    parser.add_argument('--match_waited_img_path', type=str, 
                        default='/home/zhangh/dataset/swj/recognition/recognition/test_car/2', 
                        help='待匹配图片路径')

    return parser.parse_args()